package cn.fws.meap.community.service.impl;

import java.util.Date;
import java.util.List;

import cn.fws.meap.community.enums.EvaluateTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.fws.framework.utils.ConvertUtils;
import cn.fws.framework.utils.UUIDUtils;

import cn.fws.meap.community.mapper.EvaluateMapper;
import cn.fws.meap.community.entity.Evaluate;
import cn.fws.meap.community.service.IEvaluateService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 点赞 服务层实现
 *
 * @author chenkh
 * @date 2019-03-07
 */
@Service
@Transactional
public class EvaluateServiceImpl implements IEvaluateService {

    @Autowired
    private EvaluateMapper evaluateMapper;

    /**
     * 查询点赞信息
     *
     * @param id 点赞ID
     * @return 点赞信息
     */
    @Override
    public Evaluate selectById(String id) {
        return evaluateMapper.selectById(id);
    }

    /**
     * 查询点赞列表
     *
     * @param evaluate 点赞信息
     * @return 点赞集合
     */
    @Override
    public List<Evaluate> selectList(Evaluate evaluate) {
        return evaluateMapper.selectList(evaluate);
    }

    /**
     * 新增点赞
     *
     * @param evaluate 点赞信息
     * @return 结果
     */
    @Override
    public int insert(Evaluate evaluate) {
        // 设置主键
        evaluate.setId(UUIDUtils.getUUID());
        // 设置创建时间
        evaluate.setCreateTime(new Date());
//		设置点赞类型
        evaluate.setEvaluateType("0".equals(evaluate.getEvaluateType()) ? EvaluateTypeEnum.STEP_ON.getCode() : EvaluateTypeEnum.FABULOUS.getCode());
        return evaluateMapper.insert(evaluate);
    }

    /**
     * 修改点赞
     *
     * @param evaluate 点赞信息
     * @return 结果
     */
    @Override
    public int update(Evaluate evaluate) {
        // 设置修改时间
        evaluate.setUpdateTime(new Date());
        //		设置点赞类型
        evaluate.setEvaluateType("1".equals(evaluate.getEvaluateType()) ? EvaluateTypeEnum.FABULOUS.getCode() : EvaluateTypeEnum.STEP_ON.getCode());
        return evaluateMapper.update(evaluate);
    }

    /**
     * 删除点赞对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteByIds(String ids) {

        return evaluateMapper.deleteByIds(ConvertUtils.toStrArray(ids));
    }

    /**
     * 查询当前文章有没有点赞
     * @param openid
     * @return
     */
    @Override
    public Boolean selectOpenId(String openid,String articleId) {
        Boolean flag=evaluateMapper.selectOpenId(openid,articleId);
        return flag;
    }

    @Override
    public Evaluate selectEvaluateStatus(String id, String openId) {


        return  evaluateMapper.selectEvaluateStatus(id,openId);
    }

}
